package Vista;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JTextField;

import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;

import Controlador.Sistema;
import DAO.DAOCliente;



public class frmCliente extends javax.swing.JFrame {
	private JTextField txtDNI;
	private JTextField txtNombre;
	private JButton btnCancelar;
	private JButton btnAceptar;
	private JTextField txtEstado;
	private JTextField txtPassword;
	private JTextField txtUsuario;
	private JTextField txtNacionalidad;
	private JTextField txtTelefono;
	private JTextField txtDomicilio;
	private JComboBox cmbSexo;
	private JTextField txtApellido;
	private String tipo; 

	/**
	* Auto-generated main method to display this JFrame
	*/
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				frmCliente inst = new frmCliente("Alta", -1);
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
			}
		});
	}
	
	public frmCliente(String Tipo, Integer dni ) {
		super();
		this.tipo = Tipo;
		
		initGUI(Tipo);
		if (dni > 0) {
			this.ObtenerCliente(dni);
		}
	}
	
	private void ObtenerCliente(Integer dni){
		DAOCliente cli = Sistema.Getinstancia().ConsultarCliente(dni);
		this.txtDNI.setText(String.valueOf(cli.getDni()));
		this.txtNombre.setText(cli.getNombre());
		this.txtApellido.setText(cli.getApellido());

		if (cli.getSexo().equals("M")) {
			this.cmbSexo.setSelectedIndex(0);
		}
		else {
			this.cmbSexo.setSelectedIndex(0);
		}
		
		this.txtDomicilio.setText(cli.getDomicilio());
		this.txtTelefono.setText(cli.getTelefono());
		this.txtNacionalidad.setText(cli.getNacionalidad());
		this.txtUsuario.setText(cli.getUsuario());
		this.txtPassword.setText(cli.getPassword());
		this.txtEstado.setText(cli.getEstado());
		
	}
	
	private void initGUI(String tipo) {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			getContentPane().setLayout(null);
			this.setTitle("Cliente");
			{
				txtDNI = new JTextField();
				getContentPane().add(txtDNI);
				txtDNI.setText("dni");
				txtDNI.setBounds(78, 25, 218, 23);
			}
			{
				txtNombre = new JTextField();
				getContentPane().add(txtNombre);
				txtNombre.setText("nombre");
				txtNombre.setBounds(78, 54, 363, 23);
			}
			{
				txtApellido = new JTextField();
				getContentPane().add(txtApellido);
				txtApellido.setText("apellido");
				txtApellido.setBounds(78, 83, 363, 23);
			}
			{
				ComboBoxModel cmbSexoModel = 
					new DefaultComboBoxModel(
							new String[] { "Masculino", "Femenina" });
				cmbSexo = new JComboBox();
				getContentPane().add(cmbSexo);
				cmbSexo.setModel(cmbSexoModel);
				cmbSexo.setBounds(78, 112, 190, 23);
			}
			{
				txtDomicilio = new JTextField();
				getContentPane().add(txtDomicilio);
				txtDomicilio.setText("domicilio");
				txtDomicilio.setBounds(78, 141, 363, 23);
			}
			{
				txtTelefono = new JTextField();
				getContentPane().add(txtTelefono);
				txtTelefono.setText("telefono");
				txtTelefono.setBounds(78, 170, 363, 23);
			}
			{
				txtNacionalidad = new JTextField();
				getContentPane().add(txtNacionalidad);
				txtNacionalidad.setText("nacionalidad");
				txtNacionalidad.setBounds(78, 199, 363, 23);
			}
			{
				txtUsuario = new JTextField();
				getContentPane().add(txtUsuario);
				txtUsuario.setText("usuario");
				txtUsuario.setBounds(78, 228, 363, 23);
			}
			{
				txtPassword = new JTextField();
				getContentPane().add(txtPassword);
				txtPassword.setText("password");
				txtPassword.setBounds(78, 257, 363, 23);
			}
			{
				txtEstado = new JTextField();
				getContentPane().add(txtEstado);
				txtEstado.setText("estado");
				txtEstado.setBounds(78, 286, 363, 23);
			}
			{
				btnAceptar = new JButton();
				getContentPane().add(btnAceptar);
				btnAceptar.setText("Aceptar");
				btnAceptar.setBounds(95, 335, 130, 23);
				btnAceptar.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						btnAceptarActionPerformed(evt);
					}
				});
			}
			{
				btnCancelar = new JButton();
				getContentPane().add(btnCancelar);
				btnCancelar.setText("Cancelar");
				btnCancelar.setBounds(252, 335, 142, 23);
				btnAceptar.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						btnCancelarActionPerformed(evt);
					}
				});
			}
			
			// En esta parte seteo los tipos de acceso si son altas, modificaciones, consultas o eliminaciones
			
			
			
			
			pack();
			this.setSize(504, 443);
		} catch (Exception e) {
		    //add your error handling code here
			e.printStackTrace();
		}
	}
	
	private void btnAceptarActionPerformed(ActionEvent evt) {
		Sistema elSistema = Sistema.Getinstancia();
		
		String sexo;
		Integer i = 0;
		
		if (this.cmbSexo.getSelectedIndex() == 0) {
			sexo = "M";
		}
		else {
			sexo = "F";
		}
		
		if (this.tipo.equals("Alta")) {
			 i = elSistema.CrearCliente(Integer.parseInt(this.txtDNI.getText()), this.txtNombre.getText(), this.txtApellido.getText(), "01/01/2000", this.txtDomicilio.getText(), this.txtTelefono.getText(), sexo, this.txtNacionalidad.getText(), this.txtUsuario.getText(), this.txtPassword.getText());
			this.setVisible(false);
		}
		
		if (this.tipo.equals("Modificacion")) {
			 i = elSistema.ModificarCliente(Integer.parseInt(this.txtDNI.getText()), this.txtNombre.getText(), this.txtApellido.getText(), "01/01/2000", this.txtDomicilio.getText(), this.txtTelefono.getText(), sexo, this.txtNacionalidad.getText(), this.txtUsuario.getText(), this.txtPassword.getText(), this.txtEstado.getText());
			this.setVisible(false);
		}
		
		
		if (this.tipo.equals("Eliminacion")) {
			i = elSistema.EliminarCliente(Integer.valueOf(this.txtDNI.getText()));
			this.txtApellido.setText("POR AHORA NO ELIMINAMOS CLINTES");
			this.setVisible(false);
		}
		
		
		this.setTitle(i.toString());
		
		
	}
	
	private void btnCancelarActionPerformed(ActionEvent evt) {
		this.setVisible(false);
	  
	}

}
